/*
 * Copyright 2010 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.androidpn.client;

import android.content.Context;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.util.Log;

/**
 * Activity for displaying the notification setting view.
 * 
 * @author Sehwan Noh (devnoh@gmail.com)
 */
public class NotificationSettingsActivity extends PreferenceActivity {

	private static final String LOGTAG = LogUtil
			.makeLogTag(NotificationSettingsActivity.class);

	public NotificationSettingsActivity() {
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setPreferenceScreen(createPreferenceHierarchy());
		setPreferenceDependencies();

		CheckBoxPreference notifyPref = (CheckBoxPreference) getPreferenceManager()
				.findPreference(Constants.SETTINGS_NOTIFICATION_ENABLED);
		if (notifyPref.isChecked()) {
			notifyPref.setTitle("消息推送 已开启");
		} else {
			notifyPref.setTitle("消息推送 已关闭");
		}
		/*
		 * CheckBoxPreference deleteUserInfo = (CheckBoxPreference)
		 * getPreferenceManager()
		 * .findPreference(Constants.SETTINGS_DELETE_USER_INFO);
		 * deleteUserInfo.setChecked(false);
		 */
	}

	private PreferenceScreen createPreferenceHierarchy() {
		Log.d(LOGTAG, "createSettingsPreferenceScreen()...");

		PreferenceManager preferenceManager = getPreferenceManager();
		preferenceManager
				.setSharedPreferencesName(Constants.SHARED_PREFERENCE_NAME);
		preferenceManager.setSharedPreferencesMode(Context.MODE_PRIVATE);

		PreferenceScreen root = preferenceManager.createPreferenceScreen(this);

		// PreferenceCategory prefCat = new PreferenceCategory(this);
		// // inlinePrefCat.setTitle("");
		// root.addPreference(prefCat);

		CheckBoxPreference notifyPref = new CheckBoxPreference(this);
		notifyPref.setKey(Constants.SETTINGS_NOTIFICATION_ENABLED);
		notifyPref.setTitle("消息推送 已开启");
		notifyPref.setSummaryOn("接收推送消息");
		notifyPref.setSummaryOff("不接收推送消息");
		notifyPref.setDefaultValue(Boolean.TRUE);
		notifyPref
				.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
					public boolean onPreferenceChange(Preference preference,
							Object newValue) {
						boolean checked = Boolean.valueOf(newValue.toString());
						if (checked) {
							preference.setTitle("消息推送 已开启");
						} else {
							preference.setTitle("消息推送 已关闭");
						}
						return true;
					}
				});

		CheckBoxPreference soundPref = new CheckBoxPreference(this);
		soundPref.setKey(Constants.SETTINGS_SOUND_ENABLED);
		soundPref.setTitle("声音");
		soundPref.setSummary("收到消息时播放声音");
		soundPref.setDefaultValue(Boolean.TRUE);
		// soundPref.setDependency(Constants.SETTINGS_NOTIFICATION_ENABLED);

		CheckBoxPreference vibratePref = new CheckBoxPreference(this);
		vibratePref.setKey(Constants.SETTINGS_VIBRATE_ENABLED);
		vibratePref.setTitle("震动");
		vibratePref.setSummary("收到消息时震动");
		vibratePref.setDefaultValue(Boolean.TRUE);
		// vibratePref.setDependency(Constants.SETTINGS_NOTIFICATION_ENABLED);

		/*
		 * CheckBoxPreference deleteUserInfo = new CheckBoxPreference(this);
		 * deleteUserInfo.setKey(Constants.SETTINGS_DELETE_USER_INFO);
		 * deleteUserInfo.setTitle("注销"); deleteUserInfo.setSummary("删除您的登录信息");
		 * deleteUserInfo.setDefaultValue(Boolean.FALSE); deleteUserInfo
		 * .setOnPreferenceClickListener(new
		 * Preference.OnPreferenceClickListener() {
		 * 
		 * @Override public boolean onPreferenceClick(Preference preference) {
		 * SharedPreferences sharedPrefs = getSharedPreferences(
		 * Constants.SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE); Editor
		 * editorxmpp = sharedPrefs.edit();
		 * editorxmpp.remove(Constants.XMPP_USERNAME);
		 * editorxmpp.remove(Constants.XMPP_PASSWORD); editorxmpp.commit(); //
		 * xmpp // 删除用户登录信息 SharedPreferences share = getSharedPreferences(
		 * "perference", MODE_PRIVATE); Editor editor = share.edit();// 取得编辑器
		 * editor.putString(Fields.USER_NAME, "");
		 * editor.putString(Fields.USER_PASSWD, "");
		 * editor.putString(Fields.USER_AVATAR, ""); editor.commit();// 提交刷新数据
		 * Toast.makeText(NotificationSettingsActivity.this, "用户登录信息已删除！",
		 * Toast.LENGTH_SHORT).show(); Intent intent1 = new Intent(); Bundle
		 * bundle1 = new Bundle(); String hoststr = share.getString(Fields.HOST,
		 * ""); int portnum = share.getInt(Fields.PORT, 8080); Server serverinfo
		 * = new Server(); serverinfo.setHost(hoststr);
		 * serverinfo.setProt(portnum);
		 * bundle1.putSerializable(Fields.SERVER_INFO, serverinfo);
		 * intent1.putExtras(bundle1);
		 * intent1.setClass(NotificationSettingsActivity.this, Login.class);
		 * startActivity(intent1); finish(); return false; } });
		 */
		root.addPreference(notifyPref);
		root.addPreference(soundPref);
		root.addPreference(vibratePref);
		// root.addPreference(deleteUserInfo);

		// prefCat.addPreference(notifyPref);
		// prefCat.addPreference(soundPref);
		// prefCat.addPreference(vibratePref);
		// root.addPreference(prefCat);

		return root;
	}

	private void setPreferenceDependencies() {
		Preference soundPref = getPreferenceManager().findPreference(
				Constants.SETTINGS_SOUND_ENABLED);
		if (soundPref != null) {
			soundPref.setDependency(Constants.SETTINGS_NOTIFICATION_ENABLED);
		}
		Preference vibratePref = getPreferenceManager().findPreference(
				Constants.SETTINGS_VIBRATE_ENABLED);
		if (vibratePref != null) {
			vibratePref.setDependency(Constants.SETTINGS_NOTIFICATION_ENABLED);
		}
	}

}
